package net

import "sync"

// Mgr 初始化
var Mgr = &WsMgr{
	userCache: make(map[int]WSConn),
}

// WsMgr websocket 管理
type WsMgr struct {
	uc        sync.RWMutex   // 读写锁
	userCache map[int]WSConn // 用户缓存
}

// UserLogin 登陆缓存
func (m *WsMgr) UserLogin(conn WSConn, uid int, token string) {
	m.uc.Lock()
	defer m.uc.Unlock()
	oldConn := m.userCache[uid]
	if oldConn != nil {
		// 有用户正在登陆
		if conn != oldConn {
			// 通知旧客户端 用户抢登陆了
			oldConn.Push("robLogin", nil)
		}
	}

	m.userCache[uid] = conn
	conn.SetProperty("uid", uid)
	conn.SetProperty("token", token)
}
